const { changePassword } = require('../../api/auth')

Page({
  data: {
    oldPassword: '',
    newPassword: '',
    confirmPassword: '',
    showOldPassword: false,
    showNewPassword: false,
    showConfirmPassword: false,
    loading: false
  },

  onLoad() {
    wx.setNavigationBarTitle({
      title: '修改密码'
    })
  },

  // 输入原密码
  onOldPasswordInput(e) {
    this.setData({
      oldPassword: e.detail.value
    })
  },

  // 输入新密码
  onNewPasswordInput(e) {
    this.setData({
      newPassword: e.detail.value
    })
  },

  // 输入确认密码
  onConfirmPasswordInput(e) {
    this.setData({
      confirmPassword: e.detail.value
    })
  },

  // 切换原密码显示/隐藏
  toggleOldPassword() {
    this.setData({
      showOldPassword: !this.data.showOldPassword
    })
  },

  // 切换新密码显示/隐藏
  toggleNewPassword() {
    this.setData({
      showNewPassword: !this.data.showNewPassword
    })
  },

  // 切换确认密码显示/隐藏
  toggleConfirmPassword() {
    this.setData({
      showConfirmPassword: !this.data.showConfirmPassword
    })
  },

  // 表单验证
  validateForm() {
    const { oldPassword, newPassword, confirmPassword } = this.data

    if (!oldPassword.trim()) {
      wx.showToast({
        title: '请输入原密码',
        icon: 'none'
      })
      return false
    }

    if (!newPassword.trim()) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      })
      return false
    }

    if (newPassword.length < 6 || newPassword.length > 20) {
      wx.showToast({
        title: '新密码长度应为6-20位',
        icon: 'none'
      })
      return false
    }

    if (!confirmPassword.trim()) {
      wx.showToast({
        title: '请确认新密码',
        icon: 'none'
      })
      return false
    }

    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次输入的密码不一致',
        icon: 'none'
      })
      return false
    }

    if (oldPassword === newPassword) {
      wx.showToast({
        title: '新密码不能与原密码相同',
        icon: 'none'
      })
      return false
    }

    return true
  },

  // 提交修改密码
  async handleSubmit() {
    if (!this.validateForm()) {
      return
    }

    this.setData({ loading: true })

    try {
      // 调用修改密码API
      const requestData = {
        oldPassword: this.data.oldPassword,
        newPassword: this.data.newPassword
      }

      console.log('修改密码请求数据:', requestData)
      console.log('原密码长度:', this.data.oldPassword.length)
      console.log('新密码长度:', this.data.newPassword.length)

      await changePassword(requestData)

      // 如果没有抛出异常，说明修改成功
      wx.showToast({
        title: '密码修改成功',
        icon: 'success'
      })

      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)

    } catch (error) {
      console.error('修改密码失败:', error)

      // 处理不同类型的错误
      let errorMessage = '修改密码失败'

      if (error && error.message) {
        errorMessage = error.message
      } else if (typeof error === 'string') {
        errorMessage = error
      }

      wx.showToast({
        title: errorMessage,
        icon: 'none'
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  // 重置表单
  handleReset() {
    this.setData({
      oldPassword: '',
      newPassword: '',
      confirmPassword: '',
      showOldPassword: false,
      showNewPassword: false,
      showConfirmPassword: false
    })
  }
})
